Submission #9445

#TimeUsernameProblemLanguageResultExecution timeMemory
9445ainu7Solve another chuck (kriii2_S)C++98
4 / 4
32 ms2792 KiB
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <string>
#include <queue>
#include <map>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <sstream>
#include <set>
using namespace std;

int R, C;
vector<string> res;
int arr[100][100];

void rotR(int i) {
  char temp[50];
      if (C > 1) { sprintf(temp, "rotR %d 1", i+1); res.push_back(temp); }
      int t = arr[i][C-1];
      for (int k=C-1; k>=1; k--) arr[i][k] = arr[i][k-1];
      arr[i][0] = t;
}

void negC() {
  char temp[50];
        sprintf(temp, "negC 1"); res.push_back(temp);
        for (int k=0; k<R; k++) arr[k][0] = -arr[k][0];
}

void rotC() {
  char temp[50];
      if (R > 1) { sprintf(temp, "rotC 1 1"); res.push_back(temp); }
      int t = arr[R-1][0];
      for (int k=R-1; k>=1; k--) arr[k][0] = arr[k-1][0];
      arr[0][0] = t;
}

void negR() {
  char temp[50];
        sprintf(temp, "negR 1"); res.push_back(temp);
        for (int k=0; k<C; k++) arr[0][k] = -arr[0][k];
}

int main()
{
  cin >> R >> C;
  for (int i=0; i<R; i++)
    for (int j=0; j<C; j++)
      cin >> arr[i][j];

  for (int i=0; i<R; i++) {
    for (int j=0; j<C; j++) {
      rotR(i);

      if (arr[i][0] < 0) negC();
    }
    int idx = 0;
    for (int j=1; j<C; j++) if (abs(arr[i][j]) < abs(arr[i][idx])) idx = j;
    for (int iter=0; iter<C-idx; iter++) rotR(i);
  }

  int tog = 0;
  {
    for (int j=0; j<R; j++) {
      rotC();

      if (arr[0][0] < 0) negR(), tog = 1 - tog;
    }
    if (tog) {
      int idx = 0;
      for (int j=1; j<R; j++) if (abs(arr[j][0]) < abs(arr[idx][0])) idx = j;
      for (int iter=0; iter<R-idx; iter++) rotC();
      negR();
    }
  }

  if (arr[0][0] < 0) {
    if (R%2) {
      negC();
      for (int i=0; i<R-1; i++) {
        rotC();
        negR();
      }
    } else if (C%2) {
      negR();
      for (int i=0; i<C-1; i++) {
        rotR(0);
        negC();
      }
    }
  }

  int r = 0;
  for (int i=0; i<R; i++) for (int j=0; j<C; j++) r += arr[i][j];
  printf("%d %d\n", r, res.size());
  for (int i=0; i<res.size(); i++) cout << res[i] << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...