Untitled
unknown
java
3 years ago
2.8 kB
11
Indexable
package z9;
import java.util.*;
class Z9Pierwsze {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] documents = new int[n][5];
for (int i = 0; i < n; i++) {
documents[i][0] = scanner.nextInt();
documents[i][1] = scanner.nextInt();
documents[i][2] = 0;
}
int juliaTime = 0;
int winstonTime = 0;
int currentDoc = 0;
int time = 0;
while (currentDoc != Integer.MIN_VALUE){
if (time >= juliaTime){
juliaTime = time;
documents = checkUnlock(documents, 1, time, juliaTime);
currentDoc = findMaxValueInColumn(documents, 0, 1);
if (currentDoc != -1){
juliaTime += documents[currentDoc][0];
documents[currentDoc][2] = 1;
documents[currentDoc][3] = 1;
}
}
if (time >= winstonTime){
winstonTime = time;
documents = checkUnlock(documents, 2, time, winstonTime);
currentDoc = findMaxValueInColumn(documents, 1, 2);
if (currentDoc != -1){
winstonTime += documents[currentDoc][1];
documents[currentDoc][2] = 2;
documents[currentDoc][4] = 1;
}
}
time++;
if (finishCheck(documents))
break;
}
System.out.println(Math.max(winstonTime,juliaTime));
}
private static int findMaxValueInColumn(int[][] documents, int column, int JW) {
int maxValue = Integer.MIN_VALUE;
int row = -1;
int doneByColumn = (JW == 1) ? 3 : 4;
int lockFor = (JW == 1) ? 2 : 1;
for (int i = 0; i < documents.length; i++) {
if (documents[i][doneByColumn] == 1 || documents[i][2] == lockFor)
continue;
if (documents[i][column] > maxValue) {
maxValue = documents[i][column];
row = i;
}
}
return row;
}
private static int[][] checkUnlock(int[][] documents, int JW, int time, int JWTime) {
for (int i = 0; i < documents.length; i++) {
if (documents[i][2] == JW && time >= documents[i][JW-1])
documents[i][2] = 0;
}
return documents;
}
private static boolean finishCheck(int[][] documents){
for (int i = 0; i < documents.length; i++) {
if (documents[i][3] == 0 || documents[i][4] == 0)
return false;
}
return true;
}
}
Editor is loading...