1001_A+B Format (20%)
#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
string s = to_string(a+b);
int x = s.length()-1;
for(int i=0;i<s.length();i++){
cout<<s[i];
if(s[i]!='-'&&(x-i)>0&&(x-i)%3==0){
cout<<',';
}
}
return 0;
}
1002_A+B for Polynomials (25%)
#include<iostream>
using namespace std;
int main(){
float list[1001]={0};
int k,exp;
float coe;
for(int i=0;i<2;i++){
scanf("%d",&k);
for(int j=0;j<k;j++){
scanf("%d%f",&exp,&coe);
list[exp]+= coe;
}
}
int k2 = 0;
for(int i=0;i<1001;i++){
if(list[i]!=0){
k2++;
}
}
printf("%d",k2);
for(int i=1000;i>=0;i--){
if(list[i]!=0.0){
printf(" %d %.1f",i,list[i]);
}
}
return 0;
}
1003_Emergency (25%)
#include<iostream>
using namespace std;
int main(){
const int MAX = 9999999;
int min;
int cityNum,roadNum,start,end;
scanf("%d%d%d%d",&cityNum,&roadNum,&start,&end);
int team[500];
int sum[500];
int teamNum[500];
int distance[500][500];
int path[500];
int visited[500];
for(int i=0;i<cityNum;i++){
scanf("%d",&team[i]);
}
fill(distance[0],distance[0]+500*500,MAX);
fill(path,path+500,MAX);
int x,y,l;
for(int i=0;i<roadNum;i++){
scanf("%d%d%d",&x,&y,&l);
distance[x][y] = distance[y][x] = l;
}
path[start] = 0;
teamNum[start] = team[start];
sum[start] = 1;
for(int i=0;i<cityNum;i++){
min = MAX;
int u = -1;
for(int j=0;j<cityNum;j++){
if(visited[j]==0&&path[j]<min){
u = j;
min = path[j];
}
}
if(u == -1){break;}
visited[u] = 1;
for(int v=0;v<cityNum;v++){
if(visited[v]==0&&distance[u][v]!=MAX){
if(path[u]+distance[u][v]<path[v]){
path[v] = path[u] + distance[u][v];
sum[v] = sum[u];
teamNum[v] = teamNum[u]+team[v];
}else if(path[u]+distance[u][v]==path[v]){
sum[v] = sum[u] + sum[v];
if(teamNum[u]+team[v]>teamNum[v]){
teamNum[v] = teamNum[u]+team[v];
}
}
}
}
}
printf("%d %d",sum[end],teamNum[end]);
return 0;
}