Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int NMAX = 1004;
- int N, M, flw;
- int flower[NMAX][NMAX];
- int pflow[NMAX], arb[NMAX];
- int main(){
- freopen("flori.in", "r", stdin);
- freopen("flori.out", "w", stdout);
- int mmax = 0, vmax = 0;
- scanf("%d%d", &N, &M);
- for(int i = 1; i <= N; i++){
- for(int j = 1; j <= M; j++){
- scanf("%d", &flw);
- if(flw > vmax)
- vmax = flw;
- if(flower[pflow[flw]][flw] != i){
- flower[pflow[flw] + 1][flw] = i;
- pflow[flw]++;
- if(pflow[flw]> mmax)
- mmax = pflow[flw];
- if(arb[i] == 0){
- if(flower[pflow[flw] - 1][flw] == 0)
- arb[i] = i;
- else
- arb[i] = flower[pflow[flw] - 1][flw];
- } else if(flower[pflow[flw] - 1][flw] != 0){
- int k = flower[pflow[flw] - 1][flw];
- int l = i;
- while(arb[k] != k)
- k = arb[k];
- if(arb[k] != arb[i])
- arb[k] = i;
- }
- }
- }
- }
- for(int j = 1; j <= N; j++){
- printf("%d ", arb[j]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment