Pagini recente » Cod sursa (job #932944) | Cod sursa (job #825461) | Cod sursa (job #514820) | Cod sursa (job #1335205) | Cod sursa (job #2950690)
#include <iostream>
#include <fstream>
#include <vector>
#define MAXN 31200
#define EVAL 624 // Nu contine E daca e mai mic decat EVAL
using namespace std;
struct Edge{
int a;
int b;
int cost;
};
Edge edges[MAXN];
vector<vector<int>> v, cost;
void quicksort(int begin, int end){
int b = begin, e = end, pivot = edges[(b + e) / 2].cost;
Edge aux;
while(edges[b].cost < pivot)
b ++;
while(edges[e].cost > pivot)
e --;
while(b < e){
aux = edges[b];
edges[b] = edges[e];
edges[e] = aux;
do{
b ++;
} while(edges[b].cost < pivot);
do{
e --;
} while(edges[e].cost > pivot);
}
if(e > begin)
quicksort(begin, e);
if(e + 1 < end)
quicksort(e + 1, end);
}
int main(){
int n, m, t, i, j, a, b, x, p5, nr;
char c;
ifstream fin ("ninjago.in");
fin >> t >> n >> m;
v.resize(n);
cost.resize(n);
for(i = 0; i < m; i ++){
fin >> a >> b;
a --;
b --;
fin.get();
c = fin.get();
p5 = 1;
x = 0;
nr = 0;
while(c != '\n'){
// printf("%c ", c);
if(c != 'E')
x += (int)(c - 'A' + 1) * p5;
else
nr ++;
p5 *= 5;
c = fin.get();
}
x += nr * p5;
// printf("\n");
v[a].push_back(b);
cost[a].push_back(x);
edges[i] = {a, b, x};
}
fin.close();
// for(i = 0; i < n; i ++){
// printf("%d: ", i + 1);
// for(j = 0; j < v[i].size(); j ++)
// printf("%d - %d ", v[i][j] + 1, cost[i][j]);
// printf("\n");
// }
ofstream fout ("ninjago.out");
fout.close();
return 0;
}